GtkStyleSet: Register GtkThemingEngine type.
authorCarlos Garnacho <carlosg@gnome.org>
Sun, 13 Jun 2010 15:31:22 +0000 (17:31 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Sat, 4 Dec 2010 14:37:11 +0000 (15:37 +0100)
This has been also hooked up to the CSS provider, which parses the "engine"
value to load the corresponding module.

gtk/gtkcssprovider.c
gtk/gtkstylecontext.c
gtk/gtkstyleset.c
gtk/gtkthemingengine.c

index f1e324ad6b623033c8c71d5fcff38e26fff5c472..e61ea736a8ca44aa7e34792521e650da24f43503 100644 (file)
@@ -905,6 +905,14 @@ parse_value (GType        type,
       g_value_set_double (value, g_ascii_strtod (value_str, NULL));
       return TRUE;
     }
+  else if (type == GTK_TYPE_THEMING_ENGINE)
+    {
+      GtkThemingEngine *engine;
+
+      engine = gtk_theming_engine_load (value_str);
+      g_value_set_object (value, engine);
+      return TRUE;
+    }
   else
     g_warning ("Cannot parse string '%s' for type %s", value_str, g_type_name (type));
 
index b12fda318ca34e01930ce4416d7eab1c00f56e4b..848d8093e894d4bb9f3dd9d1633f417d44b784c6 100644 (file)
@@ -145,6 +145,10 @@ rebuild_properties (GtkStyleContext *context)
           g_object_unref (provider_style);
         }
     }
+
+  gtk_style_set_get (priv->store, GTK_STATE_NORMAL,
+                     "engine", &priv->theming_engine,
+                     NULL);
 }
 
 void
index 2bc91aae512121f673b9c6b7de14b574923fd305..5d8a856bc1062b6428cf63f5ca7d901c39c4c07f 100644 (file)
@@ -25,6 +25,7 @@
 #include "gtkstyleprovider.h"
 #include "gtkstyleset.h"
 #include "gtkprivate.h"
+#include "gtkthemingengine.h"
 #include "gtkintl.h"
 
 #include "gtkalias.h"
@@ -78,6 +79,7 @@ gtk_style_set_class_init (GtkStyleSetClass *klass)
   gtk_style_set_register_property ("font", PANGO_TYPE_FONT_DESCRIPTION);
 
   gtk_style_set_register_property ("padding", GTK_TYPE_BORDER);
+  gtk_style_set_register_property ("engine", GTK_TYPE_THEMING_ENGINE);
 
   g_type_class_add_private (object_class, sizeof (GtkStyleSetPrivate));
 }
index 3a019dc995510cd5ce25f0c88cfc06009ff49050..5d4c8ce7cc5efd8fc47deeacb5a2448dd13bf343 100644 (file)
@@ -393,7 +393,7 @@ gtk_theming_engine_load (const gchar *name)
 
   if (!engine)
     {
-      if (!default_engine)
+      if (G_UNLIKELY (!default_engine))
         default_engine = g_object_new (GTK_TYPE_THEMING_ENGINE, NULL);
 
       engine = default_engine;